package juegos.cuatroEnRaya;


	import java.awt.BorderLayout;
	import java.awt.Color;
	import java.awt.Font;
	import java.awt.event.ActionEvent;
	import java.awt.event.ActionListener;
	import javax.swing.JButton;
	import javax.swing.JFrame;
	import javax.swing.JLabel;
	import javax.swing.UIManager;

	public class Temporizador extends JLabel implements Runnable, ActionListener {
		public Temporizador() {
			//setTitle("Cronometro");
			setSize(100, 100);
			//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			setLayout(new BorderLayout());

			// Etiqueta donde se colocara el tiempo
			tiempo = new JLabel("00:00:000");
			tiempo.setFont(new Font(Font.SERIF, Font.BOLD, 17));
			tiempo.setHorizontalAlignment(JLabel.CENTER);
			tiempo.setForeground(Color.RED);
			tiempo.setBackground(Color.WHITE);
			tiempo.setOpaque(true);

			add(tiempo, BorderLayout.CENTER);
			setVisible(true);
		}

		public void run() {
			Integer minutos = 0, segundos = 0, milesimas = 0;
			// min es minutos, seg es segundos y mil es milesimas de segundo
			String min = "", seg = "", mil = "";
			try {
				// Mientras cronometroActivo sea verdadero entonces seguira
				// aumentando el tiempo
				while (cronometroActivo) {
					Thread.sleep(4);
					// Incrementamos 4 milesimas de segundo
					milesimas += 4;

					// Cuando llega a 1000 osea 1 segundo aumenta 1 segundo
					// y las milesimas de segundo de nuevo a 0
					if (milesimas == 1000) {
						milesimas = 0;
						segundos += 1;
						// Si los segundos llegan a 60 entonces aumenta 1 los
						// minutos
						// y los segundos vuelven a 0
						if (segundos == 60) {
							segundos = 0;
							minutos++;
						}
					}

					// Esto solamente es estetica para que siempre este en formato
					// 00:00:000
					if (minutos < 10)
						min = "0" + minutos;
					else
						min = minutos.toString();
					if (segundos < 10)
						seg = "0" + segundos;
					else
						seg = segundos.toString();

					if (milesimas < 10)
						mil = "00" + milesimas;
					else if (milesimas < 100)
						mil = "0" + milesimas;
					else
						mil = milesimas.toString();

					// Colocamos en la etiqueta la informacion
					tiempo.setText(min + ":" + seg + ":" + mil);
				}
			} catch (Exception e) {
			}
			// Cuando se reincie se coloca nuevamente en 00:00:000
			//tiempo.setText("00:00:000");
		}

		// Esto es para el boton iniciar y reiniciar
		public void actionPerformed(ActionEvent evt) {
			Object o = evt.getSource();
			if (o instanceof JButton) {
				JButton btn = (JButton) o;
				if (btn.getText().equals("Iniciar"))
					iniciarCronometro();
				if (btn.getText().equals("Reiniciar"))
					pararCronometro();
			}
		}

		// Iniciar el cronometro poniendo cronometroActivo
		// en verdadero para que entre en el while
		public void iniciarCronometro() {
			cronometroActivo = true;
			hilo = new Thread(this);
			hilo.start();
		}

		// Esto es para parar el cronometro
		public void pararCronometro() {
			cronometroActivo = false;
		}

		public static void main(String[] args) {
			// Esta parte es para look and feel por lo tanto es opcional, solo hay
			// que descomentarla
			// try{
			// UIManager.setLookAndFeel( new
			// com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel() );
			// }catch( Exception e ){}
			new Temporizador();
		}

		JLabel tiempo;
		Thread hilo;
		boolean cronometroActivo;
	}

